﻿using System;
using PropertyExpression.Common;

namespace PropertyExpression.ControllableQuery.Test
{
    public partial interface T000
    {
        
    }
    public interface T001
    {
        int A1 { get; }
        string A2 { get; }
    }

    public interface T002
    {
    }

    public interface T003
    {
    }

    public interface T004
    {
    }

    public interface T005
    {
        int Value { get; }
    }

    public interface T006
    {
        int TagSynonymsId { get; }
        string TagSynonymsSourceTagName { get; }
        string TagSynonymsTargetTagName { get; }
        int? OwnerUserId { get; }
        DateTime? ApprovalDate { get; }
        DateTime? TagSynonymsCreationDate { get; }
        int? AutoRenameCount { get; }
        int? Score { get; }
        int? SourceTagId { get; }
        string SourceTagName { get; }
        int? TargetTagId { get; }
        string TargetTagName { get; }
        int? UserId { get; }
        int? Reputation { get; }
        DateTime? CreationDate { get; }
        string DisplayName { get; }
        DateTime? LastAccessDate { get; }
        string WebsiteUrl { get; }
        string Location { get; }
        int? Age { get; }
        string AboutMe { get; }
        int? Views { get; }
        int? UpVotes { get; }
        int? DownVotes { get; }
        long? RowNumber { get; }
    }

    public interface T007
    {
        int A { get; }
    }

    public interface T008
    {
        int B { get; }
    }

    public interface ITagSynonym
    {
        int Id { get; }
        string SourceTagName { get; }
        string TargetTagName { get; }
        int? OwnerUserId { get; }
        DateTime? ApprovalDate { get; }
        DateTime? CreationDate { get; }
        int? AutoRenameCount { get; }
        int? Score { get; }
        int? SourceTagId { get; }
        int? TargetTagId { get; }
        string DisplayName { get; }
        long? RowNumber { get; }
    }

    public interface ITagSynonym2
    {
        int Id { get; }
        string SourceTagName { get; }
        string TargetTagName { get; }
        int? OwnerUserId { get; }
        DateTime? ApprovalDate { get; }
        DateTime? CreationDate { get; }
        int? AutoRenameCount { get; }
        int? Score { get; }
        int? SourceTagId { get; }
        int? TargetTagId { get; }
        string DisplayName { get; }
    }

    public interface T010
    {
        int C { get; }
    }

    public interface T011
    {
        int Id { get; }
        string SourceTagName { get; }
        string TargetTagName { get; }
        int? OwnerUserId { get; }
        DateTime? ApprovalDate { get; }
        DateTime? CreationDate { get; }
        int? AutoRenameCount { get; }
        int? Score { get; }
        int? SourceTagId { get; }
        int? TargetTagId { get; }
        string DisplayName { get; }
    }

    public interface T012
    {
        Guid? Id { get; }
        int? Age { get; }
    }

    public interface T013
    {
        int A001 { get; }
        string A002 { get; }
    }

    public interface IPost
    {
        int Id { get; }
        DateTime? CreationDate { get; }
    }

    //TODO: раскомментировать или убрать
    //public interface T001
    //{
    //    DateTime OrderDate { get; }
    //    int OrderID { get; }
    //}

    //public interface T002
    //{
    //    int ProductID { get; }
    //    int Quantity { get; }
    //}

    //public interface T003
    //{
    //    int ProductID { get; }
    //    int Quantity { get; }
    //    int OrderID { get; }
    //    DateTime OrderDate { get; }
    //}

    //public interface T004
    //{
    //    int ProductID { get; }
    //    int Quantity { get; }
    //    int OrderID { get; }
    //}
}